home *** CD-ROM | disk | FTP | other *** search
/ Video Toaster 4.0 / Video Toaster v4.0.iso / arexx / modeler / toroid.lwm < prev    next >
Text File  |  1993-12-13  |  2KB  |  85 lines

  1. /* CMD: Toroid
  2.  * Make Torus section in Modeler  */
  3. /* By Arnie Cachelin Copyright © 1992 NewTek, Inc. */
  4.  
  5. arg angle startangle name
  6. if angle="" then angle=360
  7. if startangle="" then startangle=0
  8. segs=abs(angle-startangle)%5  /* approx 5 deg per slice */
  9. Ax='Y'
  10. libadd = addlib("LWModelerARexx.port",0)
  11. signal on error
  12. signal on syntax
  13.  
  14. if name="" then name="Torus"
  15. else name=strip(name)
  16.  
  17. call req_begin "Toroid"
  18.  
  19. AxId = req_addcontrol("Axis", "CH",'X Y Z')
  20. SegId = req_addcontrol("Segments",'N')
  21. SidId = req_addcontrol("Sides",'N')
  22. RadId = req_addcontrol("Radius",'N',0)
  23. StAngId = req_addcontrol("Start Angle",'N',0)
  24. AngId = req_addcontrol("End Angle",'N',0)
  25. XSecId = req_addcontrol("XSection",'V',0)
  26. SurfId = req_addcontrol("Surface",'R')
  27.  
  28. call req_setval SegId, 16,16
  29. call req_setval SidId, 16,16
  30. call req_setval AxId, 2
  31. call req_setval RadId, 1,1
  32. call req_setval XSecId,'0.5 0.5 0.5' 0.50
  33. call req_setval StAngId, startangle
  34. call req_setval AngId, angle
  35.  
  36.  
  37. x = req_post()
  38. if (x) then do
  39.     segs= req_getval(SegId)
  40.     sides= req_getval(SidId)
  41.     Ax= req_getval(AxId)
  42.     r=req_getval(RadId)
  43.     xsec= req_getval(XSecId)
  44. /*     xsec=translate(xsec,',',' ') */
  45.     name= req_getval(SurfId)
  46.     startangle= req_getval(StAngId)
  47.     angle= req_getval(AngId)
  48.     call req_end()
  49.     end
  50. else do
  51.  call req_end()
  52.  exit
  53.  end
  54.  
  55. if Ax=1 then do
  56.   Ax='X'
  57.   lax='Z'
  58.   cen='0 'r' 0'
  59.   end
  60. else if Ax=2 then do
  61.   Ax='Y'
  62.   lax='Z'
  63.   cen=r*1.0' 0 0'
  64.   end
  65. else if Ax=3 then do
  66.   Ax='Z'
  67.   lax='Y'
  68.   cen=r*1.0' 0 0'
  69.   end
  70.  
  71.  /* Need to clear out objects, or they will be lathed too!  :(  */
  72. call CUT()
  73. call SURFACE(name)
  74. call MAKEDISC(xsec,0,0,lax,sides,1,cen)
  75. call LATHE(Ax,segs,0,angle,startangle)
  76. call PASTE()      /* Replace stuff we cleared out :) */
  77.  
  78. exit
  79.  
  80. syntax:
  81. error:
  82.   call end_all
  83.     t=Notify(1,'!Rexx Script Error','@'ErrorText(rc),'Line 'SIGL)
  84.     exit
  85.